ในทริตอน หน่วยพื้นฐานของการดำเนินการจะเปลี่ยนจากเธรดสเกลาร์ของ CUDA เป็น อินสแตนซ์โปรแกรม. ซึ่งเป็นการแทนที่แบบสร้างภาพของบล็อกเธรดใน GPU โดยที่อินสแตนซ์เดียวจะจัดการกับชุดข้อมูลเวกเตอร์ 'บล็อก' หลายค่าพร้อมกัน
1. ตัวตนของอินสแตนซ์โปรแกรม
หน่วยดำเนินการทุกหน่วยจะรับตัวตนผ่าน pid = tl.program_id(axis=0). พิจารณาอย่างเช่น รถยกในโกดัง (อินสแตนซ์โปรแกรม) ที่ยก พาเลท (บล็อก) ของกล่อง 128 ชิ้น ซึ่งต่างจากแรงงานคนเดียว (เธรดของ CUDA) ที่ยกกล่องเพียงชิ้นเดียว
2. ทริตอนเทียบกับเทนเซอร์ของพายโทช
การเข้าใจช่องว่างเชิงความหมายมีความสำคัญต่อการจัดการหน่วยความจำ:
- เทนเซอร์ของพายโทช: วัตถุแบบพีทีอนที่ฝั่งโฮสต์ห่อหุ้มการจัดเก็บในหน่วยความจำ VRAM ลำดับขั้นและเมตาดาต้า
- เทนเซอร์ของทริตอน: วัตถุระดับคอมไพล์ที่แสดงค่าหรือตัวชี้ที่อยู่ใน เรจิสเตอร์หรือ SRAM.
มุมมองของพายโทช
วัตถุพีทีออนที่ชี้ไปยังหน่วยความจำแบบต่อเนื่องระดับโลก
วัตถุพีทีออนที่ชี้ไปยังหน่วยความจำแบบต่อเนื่องระดับโลก
มุมมองของทริตอน
บล็อกข้อมูล 2D/1D ภายในเรจิสเตอร์ของคอมไพล์เลอร์
บล็อกข้อมูล 2D/1D ภายในเรจิสเตอร์ของคอมไพล์เลอร์
3. ลักษณะของแบบจำลอง SPMD
ทริตอนใช้แนวทาง โปรแกรมเดียว ข้อมูลหลายชุด (SPMD) การไหล ทุกอินสแตนซ์โปรแกรมจะดำเนินการตาม รหัสเดียวกันอย่างแม่นยำ โค้ด ความแตกต่างจะเกิดขึ้นก็ต่อเมื่อตรรกะใช้ pid ในการคำนวณตำแหน่งหน่วยความจำเฉพาะ
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>